package com.music.note_android.ui.editor

/**
 * 绘制工具枚举类
 * 定义了画布编辑器支持的所有绘制工具类型
 */
enum class DrawingTool {
    /**
     * 钢笔工具
     * 特性：清晰锐利的线条，适合精确绘制
     * 渲染效果：实色填充，无纹理，边缘抗锯齿处理
     */
    PEN,
    
    /**
     * 铅笔工具
     * 特性：带纹理的自然笔迹，模拟真实铅笔
     * 渲染效果：纹理叠加效果，边缘略微模糊
     */
    PENCIL,
    
    /**
     * 荧光笔工具
     * 特性：半透明高亮效果，用于标记重点
     * 渲染效果：半透明颜色，较粗的笔迹，支持颜色叠加
     */
    HIGHLIGHTER,
    
    /**
     * 橡皮擦工具
     * 特性：擦除已有的笔迹
     * 渲染效果：完全擦除，不留痕迹
     */
    ERASER;
    
    /**
     * 获取工具的默认粗细
     */
    fun getDefaultWidth(): Float {
        return when (this) {
            PEN -> 2f
            PENCIL -> 3f
            HIGHLIGHTER -> 12f
            ERASER -> 10f
        }
    }
    
    /**
     * 获取工具的粗细范围
     */
    fun getWidthRange(): Pair<Float, Float> {
        return when (this) {
            PEN -> Pair(1f, 20f)
            PENCIL -> Pair(1f, 20f)
            HIGHLIGHTER -> Pair(8f, 30f)
            ERASER -> Pair(5f, 50f)
        }
    }
    
    /**
     * 获取工具的默认透明度
     */
    fun getDefaultAlpha(): Float {
        return when (this) {
            PEN -> 1.0f
            PENCIL -> 0.9f
            HIGHLIGHTER -> 0.5f
            ERASER -> 1.0f
        }
    }
    
    /**
     * 判断工具是否支持压感
     */
    fun supportsPressure(): Boolean {
        return when (this) {
            PEN -> true
            PENCIL -> true
            HIGHLIGHTER -> false
            ERASER -> false
        }
    }
    
    /**
     * 判断工具是否支持透明度调节
     */
    fun supportsAlpha(): Boolean {
        return when (this) {
            PEN -> false
            PENCIL -> true
            HIGHLIGHTER -> true
            ERASER -> false
        }
    }
    
    /**
     * 获取工具的显示名称
     */
    fun getDisplayName(): String {
        return when (this) {
            PEN -> "钢笔"
            PENCIL -> "铅笔"
            HIGHLIGHTER -> "荧光笔"
            ERASER -> "橡皮擦"
        }
    }
}